<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- saved from url=(0057)http://www.ibm.com/developerworks/cn/opensource/os-ecant/ -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" xml:lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>用 Eclipse 和 Ant 进行 Python 开发</title>
<meta http-equiv="PICS-Label" content="(PICS-1.1 &quot;http://www.icra.org/ratingsv02.html&quot; l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) &quot;http://www.rsac.org/ratingsv01.html&quot; l gen true r (n 0 s 0 v 0 l 0) &quot;http://www.classify.org/safesurf/&quot; l gen true r (SS~~000 1))">
<link rel="schema.DC" href="http://purl.org/DC/elements/1.0/">
<link rel="SHORTCUT ICON" href="http://www.ibm.com/favicon.ico">
  <meta name="Owner" content="dw@cn.ibm.com">
  <meta name="DC.Language" scheme="rfc1766" content="zh-CN">
  <meta name="IBM.Country" content="CN">
<meta name="Security" content="Public">
<meta name="IBM.SpecialPurpose" content="SP001">
<meta name="IBM.PageAttributes" content="sid=1003,1004">
<meta name="Source" content="v16 Template Generator">
<meta name="Robots" content="index,follow">
<meta name="Abstract" content="Python 是一种非常灵活强大的动态脚本编程语言，具有完整的面向对象特性。本文着重介绍了如何使用基于 Java 技术的流行开发工具 Eclipse 和 Ant 进行 Python 开发。">
<meta name="Description" content="Python 是一种非常灵活强大的动态脚本编程语言，具有完整的面向对象特性。本文着重介绍了如何使用基于 Java 技术的流行开发工具 Eclipse 和 Ant 进行 Python 开发。">
<meta name="Keywords" content="Python, Eclipse, Ant, tttosca">
<meta name="DC.Date" scheme="iso8601" content="2004-06-01">
<meta name="DC.Type" scheme="IBM_ContentClassTaxonomy" content="CT316">
<meta name="DC.Subject" scheme="IBM_SubjectTaxonomy" content="TT400">
<meta scheme="IBM_WTMCategory" name="IBM.WTMCategory" content="SOFDCOSRCN">
<meta name="DC.Rights" content="© Copyright IBM Corporation 2004">
<meta name="IBM.Effective" scheme="W3CDTF" content="2004-06-01">
<meta name="title" content="用 Eclipse 和 Ant 进行 Python 开发">

<!-- HEADER_SCRIPTS_AND_CSS_INCLUDE -->
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/all.css" media="all" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/screen.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/screen-uas.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/screen-fonts.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/handheld.css" media="handheld" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/print.css" media="print" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/overlay.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">

<!-- dW-specific CSS -->
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-screen.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-local-site.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-screen-comments-ratings-signin.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/jquery.cluetip.css" media="screen,projection" rel="stylesheet" title="www" type="text/css">

<!-- JPP: LOCAL URL FOR TESTING V16 DEFIANT MASTHEAD/FOOTER -->
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-mf2013-03.css" rel="stylesheet" title="www" type="text/css">
<link href="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-mf-cn.css" rel="stylesheet" title="www" type="text/css">
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/ibmcommon.js" type="text/javascript">//</script><link rel="search" type="application/opensearchdescription+xml" href="http://www.ibm.com/search/opensearch/description.xml" title="IBM Search">
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/dynamicnav.js" type="text/javascript">//</script>
<script language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/urltactic.js" type="text/javascript"></script>
<!-- Rating_START -->
<script language="JavaScript" type="text/javascript">
  // <![CDATA[

 dwr = {};
  dwr.clickhere = '点击评分';
  dwr.starIntro = ''; 
  dwr.stars = '星';
  dwr.star = '星'; 
  dwr.avgRatingOf = '平均分';
  dwr.youRated = '您的评分是';
  dwr.avgRating = '平均分';
  dwr.basedOnVote = '共 {1} 个评分'; // {1} to be substitue by code
  dwr.basedOnVotes = '共 {1} 个评分';
  dwr.leftParen = '（'; 
  dwr.rightParen = ' ）'; 
  dwr.space = ' '; 
  dwr.yourRating = '您的评分';
dwr.avgRating2 = '总共 {1} 评分的平均分';
dwr.avgRating3 = '平均分{1} 星';
dwr.rateThisArticle = '为本文评分';
dwr.votes = '{1}个评分';
dwr.vote = '{1}个评分';
dwr.submitErr = '错误：提交失败，请重试。';
dwr.noRatingErr = '错误：请选择一个评分并重新提交。';
dwr.submit = '提交';
// ]]>
</script>

<!-- Rating_START -->
<script language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/showrating.js" type="text/javascript"></script>
<style type="text/css">
  .metavalue {
  display: none;
  }
</style>
<!-- Rating_END --><!-- RESERVED_HEADER_INCLUDE -->
<script language="javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/ajax1.js" type="text/javascript"></script>
<script language="javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/search_counter-maverick.js" type="text/javascript"></script>
<script language="javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/request_referer_capture-maverick.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
 <!--
 setDefaultQuery('defaultHere');
 //-->
</script>
<script language="JavaScript" type="text/javascript">
 <!--
 function openNewWindow(url,tar,arg){window.open(url,tar,arg);}
 //-->
</script>
  <!-- Include file support -->
  <script language="JavaScript" type="text/javascript">
    (function($) {
    jQuery.extend({
    getInc: function(u,d){
    if(u==null)return;
    jQuery.ajax({
    type: "GET",
    url: u,
    dataType: "text",
    success: function(t) {
    jQuery(d).html(t);
    ibmCommon.initShowHide(jQuery(d).children()[0]);	
    },
    async: true
    });
    }
    });
    })(jQuery);
  </script>
<script id="flashdetect" type="text/javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/flash-detect.js" charset="UTF-8"></script><script id="mhMenu" type="text/javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/cnzh-utf8.js" charset="UTF-8"></script><script id="wiBundle" type="text/javascript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/Controller" charset="UTF-8"></script></head>

<body id="ibm-com">
<div id="ibm-top" class="ibm-landing-page">

<!-- MASTHEAD_BEGIN -->
<!-- MASTHEAD_BEGIN -->
<div class="ibm-access"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-content">跳转到主要内容</a></div>
<div id="ibm-masthead-dw">
  
    <!-- TOP ROW -->    
    <div id="dw-masthead-top-row">
    	<ul id="ibm-mast-options-dw" class="cn">
    		<li id="dw-mast-top-0"> 	
    			<a class="" href="http://www.ibm.com/developerworks/dwwi/DWAuthRouter?m=loginpage&lang=zh&d=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F" title="">登录 (或注册)</a>
    		</li>
    		<li id="dw-mast-top-1" class="dw-mast-top-1-cn">
    			<a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#SELECTLANG">中文</a><img class="dw-preload" src="./用 Eclipse 和 Ant 进行 Python 开发_files/arrow-down-active.gif" width="8" height="7" alt="">
    		</li>
    		<li id="dw-mast-top-2" class="dw-mf-hide">
    			<a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/photo.do" alt="PHOTO" class="dw-mast-profimg" width="20" height="20"> [userid]</a>
    		</li>
    		<li id="dw-mast-top-3">
    			<a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/ibm-smlogo.gif" width="44" height="16" alt="IBM®"></a>
    		</li>
    	</ul>
	</div>
    
    <!-- TOP ROW SLIDER -->
    <div id="ibm-my-menu-dw">    
        <div class="ibm-ribbon-pane-dw">
            <div class="ibm-ribbon-section-dw">
                <!-- Sign-in -->
                <div class="dw-mast-columns">                
					<div class="dw-mast-col-1-1">
						<div id="dw-mast-sso">
							<!--<div id="dw-mast-sso-reg">
								<p class="dw-mast-sso-reg-cn">如果您还没有注册到 IBM 注册系统，我们为给您带来的不便表示道歉，并请您马上注册。 							
									<a href="#" onclick="(function () {window.location='/developerworks/dwwi/DWAuthRouter?m=reg&amp;lang=zh&amp;d='+encodeURIComponent(location.href);})();">现在注册</a>。</p>
							</div>-->
							<div id="signin_error_mf" class="no-display"></div>
							<div id="dw-mast-sso-form">
								<form id="sForm_mf" action="" method="post" name="sForm_name_mf" onsubmit="return false;">
									<div id="dw-mast-sso-id" class="dw-mast-sso-id-cn">
										<label for="ibmid_mf">IBM ID：</label>
										<input id="ibmid_mf" type="text" value="" name="ibmid_name_mf" maxlength="100" onkeypress="handleEP(event,this.form,&#39;mf&#39;);" class="">
									</div>
									<div id="dw-mast-sso-pw" class="dw-mast-sso-pw-cn">
										<label for="pw_mf">密码：</label>
										<input id="pw_mf" type="password" value="" name="pw_name_mf" maxlength="100" onkeypress="handleEP(event,this.form,&#39;mf&#39;);" class="">
									</div>
									<div id="dw-mast-sso-target" class="dw-mast-sso-target-cn">
										<p class="dw-mf-perm-box">
											<input id="perm_mf" type="checkbox" name="perm_name_mf"><label for="perm_mf"> 保持登录。</label>
										</p>
									</div>
									<div id="dw-mast-sso-terms">
										<p class="dw-mast-sso-terms-cn">单击提交则表示您同意developerWorks 的条款和条件。 <a href="http://www.ibm.com/developerworks/mydeveloperworks/terms?lang=zh">查看条款和条件</a>.</p>
									</div>
									<div>
										<input class="dw-mf-submit-btn-cn" name="ibm_submit_name_mf" value="提交" onclick="signin(&#39;mf&#39;);return false;" type="submit">
									</div>
								</form>
							</div>
							<div id="dw-mast-sso-update">
								<div id="dw-mast-sso-update-id">
									<ul>
										<li><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;/developerworks/dwwi/DWAuthRouter?m=reg&amp;lang=zh_CN&amp;d=&#39;+encodeURIComponent(location.href);})();">需要一个 IBM ID？</a></li>
										
									<li><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/dwwi/jsp/WSHelp.jsp?lang=zh_CN">忘记 IBM ID？</a></li>
									</ul>
								</div>
								<div id="dw-mast-sso-update-pw">
								<ul class="dw-mf-pwupdate">
									<li><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;https://www.ibm.com/account/profile?page=forgot&amp;lang=zh_CN&amp;appname=ibm&amp;required=null&amp;d=&#39;+encodeURIComponent(getAuthUrl())+&#39;%3Fm%3Dloginpage%26lang%3Dzh_CN%26d%3D&#39;+encodeURIComponent(location.href);})();">忘记密码？</a></li>
									<li><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;https://www.ibm.com/account/profile?page=chpw&amp;lang=zh_CN&amp;appname=ibm&amp;required=null&amp;d=&#39;+encodeURIComponent(location.href);})();">更改您的密码</a></li>
								</ul>
									</div>
							</div>
							<div id="dw-mast-sso-text">
			<!-- lk v17 updated text -->				    
			<p>这是您第一次登陆到 developerWorks，已经自动为您创建了您的概要文件。 <strong>选择您概要文件中可以公开的信息的信息（如姓名、国家/地区，以及公司），这些信息同时也会与您所发布的内容相关联。 </strong>您可以随时更新您的 IBM 账号。</p>
							<p class="dw-mf-secure-cn">所有提交的信息确保安全。</p>
							</div>
							<div class="dw-mast-close">
								<ul>
									<li><div class="dw-mast-close-sign-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
								</ul>
							</div>	
						</div>
						
						<div id="dw-mast-dname" class="dw-mf-hide">
							<p>当您初次登录到 developerWorks 时，将会为您创建一份概要信息，您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。</p><p><strong>昵称长度在 3 至 31 个字符之间</strong>。 您的昵称在 developerWorks 社区中必须是唯一的，并且出于隐私保护的原因，不能是您的电子邮件地址。</p>
							<div id="signin_dname_error_mf" class="no-display"></div>
							<div id="dw-mast-dname-form">
								<form id="dForm_mf" action="" method="post" name="dForm_name_mf" onsubmit="return false;">
									<div id="dw-mast-dname-mf">
										<label for="dname_mf">昵称：</label>
										<input id="dname_mf" name="dname_name_mf" maxlength="31" size="25" value="" type="text" onkeypress="handleEP(event,this.form,&#39;mf&#39;);">
									</div>
									<div id="dw-mast-dname-terms">
										<p class="dw-mast-dname-terms-cn">单击<strong>提交</strong>则表示您同意developerWorks 的条款和条件。 <a href="http://www.ibm.com/developerworks/mydeveloperworks/terms?lang=zh">查看条款和条件</a>.</p>
									</div>
									<div>
										<input class="dw-mf-submit-btn-cn" name="dname_submit_name_mf" value="提交" onclick="signin(&#39;mf&#39;);return false;" type="submit">
									</div>
								</form>								
							</div>
							<div id="dw-mast-dname-secure">
								<p class="dw-mf-secure-cn">所有提交的信息确保安全。</p>
							</div>
							<div class="dw-mast-close">
								<ul>
									<li><div class="dw-mast-close-sign-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
								</ul>
							</div>	
						</div>
	
						<div id="dw-mast-auth" class="dw-mf-hide">
							<div>

								<h2>My developerWorks:</h2>
<!-- lk v17 updated links and text -->							    
               		<ul>
							<li><a id="dw-mast-top-0-0" href="http://www.ibm.com/developerworks/community/homepage?lang=zh">我的首页</a></li>						    
							<li><a href="http://www.ibm.com/developerworks/community/profiles/html/myProfileView.do?lang=zh">我的概要信息</a></li>
							<li><a href="http://www.ibm.com/developerworks/community/groups/service/html/mycommunities?lang=zh">我的社区</a></li>
			                 <li><a href="http://www.ibm.com/developerworks/community/news/?lang=zh">设置</a></li>
										    
						</ul>      
							</div>
							<div id="dw-mast-notify" class="dw-mf-hide">
								<h2>我的通知：</h2>
								<ul>
									<li><a id="new_notify" href="http://www.ibm.com/developerworks/mydeveloperworks/homepage?lang=zh">{[num_notify] 个新通知}([num_notify] 个新通知)</a></li>
									<li><a id="new_invite" href="http://www.ibm.com/developerworks/mydeveloperworks/profiles/html/wc.do?action=in&requireAuth=true&widgetId=friends&lang=[lang]">{[num_invite] 个网络请求}([num_invite] 个网络请求)</a></li>  
								</ul>
							</div>
							<div class="dw-mast-more">
								<ul class="ibm-link-list">
									<li><a class="dw-more-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="signOut(); return false;"><strong>退出</strong></a></li>
								</ul>
							</div>
							<div class="dw-mast-close">
								<ul>
									<li><div class="dw-mast-close-sign"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
								</ul>
							</div>		
						</div>
						
					</div>
                	
                </div>
                <!-- Site selector --> 
				<div class="dw-mast-columns">
					<div class="dw-mast-col-2-1">
						<h2>选择语言：</h2>
						<ul>
							<li><a id="dw-mast-top-1-0" href="http://www.ibm.com/developerworks/">English</a></li>
							<li><a href="http://www.ibm.com/developerworks/cn/">中文</a></li>
							<li><a href="http://www.ibm.com/developerworks/jp/">日本語</a></li>
						    <li><a href="http://www.ibm.com/developerworks/ru/">Русский</a></li>
						</ul>
					</div>
					<div class="dw-mast-col-2-2">
						<ul>
							<li><a href="http://www.ibm.com/developerworks/br/">Português (Brasil)</a></li>
							<li><a href="http://www.ibm.com/developerworks/ssa/">Español</a></li>
							<li><a href="http://www.ibm.com/developerworks/vn/">Việt</a></li>
						</ul>
					</div>
					<div class="dw-mast-close">
						<ul>
							<li><div class="dw-mast-close-lang"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
						</ul>
                    </div>
                </div>
                <div class="dw-mast-columns"><!-- Authenticated --></div>
                <!-- IBM -->
				<div class="dw-mast-columns">
					<div class="dw-mast-col-2-1">
						<ul>
							<li><a id="dw-mast-top-3-0" href="http://www.ibm.com/cn/zh/">IBM 主页</a></li>
							<li><a href="http://www.ibm.com/solutions/cn/zh/">解决方案</a></li>
							<li><a href="http://www.ibm.com/software/cn/">软件</a></li>
						</ul>
					</div>
					<div class="dw-mast-col-2-2 dw-mast-ibm">
						<ul>
							<li><a href="http://www.ibm.com/support/cn/zh/">支持门户</a></li>
							<li><a href="http://www.ibm.com/support/documentation/cn/zh/">产品文档</a></li>
							<li><a href="http://www.ibm.com/redbooks/">Redbooks（英文）</a></li>
						</ul>
					</div>
					<div class="dw-mast-close">
						<ul>
							<li><div class="dw-mast-close-ibm-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
						</ul>
                    </div> 
				</div>
			</div>
        </div>
    </div>

    <!-- BOTTOM ROW -->
    <div id="ibm-universal-nav-dw">
        <ul id="ibm-unav-links-dw">
        	<li id="ibm-unav-home-dwlogo">
        		<a href="http://www.ibm.com/developerworks/cn/"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/dw-wordmark.gif" width="218" height="32" alt="developerWorks®"></a>
        	</li>
        </ul>
    	<ul id="ibm-menu-links-dw" class="ibm-menu-links-dw-cn">
    		
    		<li id="dw-mast-nav-0"><a href="http://www.ibm.com/developerworks/cn/topics">技术主题</a></li>
    		<li id="dw-mast-nav-1"><a href="http://www.ibm.com/developerworks/cn/downloads/">软件下载</a></li>
    		<li id="dw-mast-nav-2"><a href="https://www.ibm.com/developerworks/community/?lang=zh">社区</a></li>
    		<li id="dw-mast-nav-3"><a href="https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=6d7f9e5d-5f89-4767-a006-a81b8d186370&lang=zh">技术讲座</a></li>
    	</ul>   
    	<form id="ibm-search-form" action="http://www.ibm.com/search/csass/search/" method="get" name="form1">
    		<input type="hidden" name="sn" value="dw">
    		<input type="hidden" name="lang" value="zh">
    		<input type="hidden" name="cc" value="CN">
    		<input type="hidden" name="en" value="utf">
    		<input type="hidden" name="hpp" value="20">
    		<input type="hidden" name="dws" value="cndw">
    		<input type="hidden" name="lo" value="zh">
    		<p>
    			<label for="q"><img alt="查询:" height="1" width="1" src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif"></label>
    			<input type="text" value="搜索 developerWorks" name="q" maxlength="100" id="q">
    			<input type="submit" id="ibm-search" class="ibm-btn-search ibm-btn-search-cn" name="Search" value="搜索">
    		</p>
    	</form>
    </div>
    
    <!-- BOTTOM ROW SLIDER -->
    <div id="ibm-common-menu-dw">
        <div class="ibm-ribbon-pane-dw">
            <div class="ibm-ribbon-section-dw">
				<!-- Technical topics category -->
  
            	<div class="dw-mast-columns">
            	<div class="dw-mast-col-5-1">
            		<h2><a id="dw-mast-nav-0-0" href="http://www.ibm.com/developerworks/cn/topics/">技术主题</a></h2>
            		
            		<ul>
            		    <li><a href="http://www.ibm.com/developerworks/cn/agile/">Agile
            			    transformation</a></li>
            			<li><a href="http://www.ibm.com/developerworks/cn/aix/">AIX and UNIX</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/bigdata/">Big data</a></li>
            			<li><a href="http://www.ibm.com/developerworks/cn/cloud/">Cloud computing</a></li>
            		
            			
            		</ul>     
            	</div>
            	<div class="dw-mast-col-5-2">
            		
            		<ul>
						<li><a href="http://www.ibm.com/developerworks/cn/ibmi/">IBM i</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/data/">Information management</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/java/">Java technology</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/linux/">Linux</a></li>
            			
           			
            		</ul>
            	</div>
            	<div class="dw-mast-col-5-3">
            		
            		<ul>
						<li><a href="http://www.ibm.com/developerworks/cn/lotus/">Lotus</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/mobile/">Mobile development</a></li>
						<li><a href="http://www.ibm.com/developerworks/cn/opensource/">Open source</a></li>
            		    <li><a href="http://www.ibm.com/developerworks/cn/rational/">Rational</a></li>
            			<!--<li><a href="http://www.ibm.com/developerworks/cn/webservices/">SOA and web services</a></li>-->
						
            			</ul>
            		
            	</div>
            	<div class="dw-mast-col-5-4">
            		<ul>
					<li><a href="http://www.ibm.com/developerworks/cn/social/">Social Business</a></li> 
             		<li><a href="http://www.ibm.com/developerworks/cn/web/">Web development</a></li>  
					<li><a href="http://www.ibm.com/developerworks/cn/websphere/">WebSphere</a></li> 
           		<!--	<li><a href="http://www.ibm.com/developerworks/cn/xml/">XML</a></li>-->
            		</ul>        
            	</div>
            	<div class="dw-mast-col-5-5">
            		<ul>
            			<li><a href="http://www.ibm.com/developerworks/cn/library/"><strong>文档库</strong></a></li>
            			<li><a href="http://www.ibm.com/developerworks/cn/products/"><strong>产品 A - Z</strong></a></li>				    
            		</ul>        
            	</div>
            	<div class="dw-mast-close">
            		<ul>
            			<li><div class="dw-mast-close-tech-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
            		</ul>
            	</div>
            </div>
            	<!-- Evaluation software category -->
            	<div class="dw-mast-columns">
            		<div class="dw-mast-col-2-1">
            			<h2><a id="dw-mast-nav-1-0" href="http://www.ibm.com/developerworks/cn/downloads">软件下载</a></h2>
            			<ul>
            				<li><a href="http://www.ibm.com/developerworks/cn/downloads/#data">Information management</a></li>
            				<li><a href="http://www.ibm.com/developerworks/cn/downloads/#lotus">Lotus</a></li>
            				<li><a href="http://www.ibm.com/developerworks/cn/downloads/#rational">Rational</a></li>
            			</ul>            
            		</div>
            		<div class="dw-mast-col-2-2">
            			<ul>
            				<li><a href="http://www.ibm.com/developerworks/cn/downloads/#tivoli">Tivoli</a></li>
            				<li><a href="http://www.ibm.com/developerworks/cn/downloads/#websphere">WebSphere</a></li>
            				
            			</ul>            
            		</div>
            		<div class="dw-mast-close">
            			<ul>
            				<li><div class="dw-mast-close-eval-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
            			</ul>
            		</div>
            	</div>
            	<!-- Community category -->
                <!-- lk v17 removed links, updated urls -->
            	<div class="dw-mast-columns">
            		<div class="dw-mast-col-2-1">
            			<h2><a id="dw-mast-nav-2-0" href="https://www.ibm.com/developerworks/community/?lang=zh">社区</a></h2>
            			<ul>
            				<li><a href="https://www.ibm.com/developerworks/community/homepage/?lang=zh">我的首页</a></li>
            				<li><a href="https://www.ibm.com/developerworks/community/profiles/?lang=zh">概要信息</a></li>
            				<li><a href="https://www.ibm.com/developerworks/community/groups/?lang=zh">群组</a></li>
							<li><a href="https://www.ibm.com/developerworks/community/blogs/?lang=zh">博客</a></li>
             			</ul>     
            		</div>
            		<div class="dw-mast-col-2-2">
            			<ul>
                    
				    <li><a href="https://www.ibm.com/developerworks/community/forums/?lang=zh">论坛</a></li>
					<li><a href="https://www.ibm.com/developerworks/community/wikis/?lang=zh">Wiki</a></li>
					<li><a href="https://www.ibm.com/developerworks/community/activities/?lang=zh">活动</a></li>
            			</ul>
            		</div>
            		<div class="dw-mast-close">
            			<ul>
            				<li><div class="dw-mast-close-comm-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
            			</ul>
            		</div>
            	</div>
            	<!-- Events category -->
            	<div class="dw-mast-columns">
            		<div class="dw-mast-col-1-1">
            			<h2><a id="dw-mast-nav-3-0" href="https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=6d7f9e5d-5f89-4767-a006-a81b8d186370&lang=zh">技术讲座</a></h2>
            			<ul>
            				<li><a href="https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=6d7f9e5d-5f89-4767-a006-a81b8d186370&lang=zh">技术讲座</a></li>
            				<li><a href="http://www.ibm.com/developerworks/cn/swi/">多媒体课堂</a></li>
            				<li><a href="http://www.ibm.com/developerworks/find/webcasts/">网络广播（英文）</a></li>
            				<li><a href="http://www.ibm.com/developerworks/find/events/">查找活动（技术讲座，网络广播，会议等）（英文）</a></li> 
            			</ul>            
            		</div>
            		<div class="dw-mast-close">
            			<ul>
            				<li><div class="dw-mast-close-event-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10" border="0"></a></div></li>
            			</ul>
            		</div>
            	</div>
            </div>
        </div>
    </div>
	
</div>
<div id="fdiv" class="ibm-access"><embed type="application/x-shockwave-flash" src="https://www.ibm.com/developerworks/js/dw-mf/connect.swf" width="1" height="1" id="sflash" name="sflash" quality="high" menu="false" wmode="window" movie="https://www.ibm.com/developerworks/js/dw-mf/connect.swf" swliveconnect="true" allowscriptaccess="always"></div>
<!-- MASTHEAD_END --><!-- MASTHEAD_END -->

<div id="ibm-pcon">

<!-- CONTENT_BEGIN -->
<div id="ibm-content">

<!-- Navigation_Trail_BEGIN -->
<!-- &nbsp; -->
      <div id="ibm-content-head"><ul id="ibm-navigation-trail"><li class="ibm-first"><a href="http://www.ibm.com/developerworks/cn/">developerWorks 中国</a></li><li><a href="http://www.ibm.com/developerworks/cn/opensource/">Open source</a></li><li><a href="http://www.ibm.com/developerworks/cn/views/opensource/libraryview.jsp">文档库</a></li></ul></div>
<!-- Navigation_Trail_END -->

<!-- dW_Summary Area_START -->
<div id="dw-summary-article">

<div class="dw-content-head">
<h1>用 Eclipse 和 Ant 进行 Python 开发</h1><p><em>用 Eclipse IDE 和 Apache Ant 构建工具进行 Python 开发</em></p>
</div>

<div class="ibm-container-body ibm-two-column">

<div class="ibm-column ibm-first">
<div class="author"><a class="dwauthor" rel="#authortip1" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#author1">Ron Smith</a> (<a href="mailto:ron.smith@rpstechnologies.net?subject=%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">ron.smith@rpstechnologies.net</a>), 负责人</div><div id="authortip1" class="dwauthor-onload-state ibm-no-print" style="display: none;">Ron Smith 是 RPS Technologies, Inc 的创始人。这是一家软件开发与软件顾问公司，总部位于芝加哥地区。Ron Smith 为客户提供基于 J2EE 的企业应用程序发方面的咨询，同时也在 RPS Technologies 内部开发软件产品。可以通过
        <a href="mailto:ron.smith@rpstechnologies.net">ron.smith@rpstechnologies.net</a>与 Ron 联系。
      </div>
<p></p>
  <p><strong>简介：</strong>&nbsp;Python 是一种非常灵活强大的动态脚本编程语言，具有完整的面向对象特性。众多的支持者指出，Python 语言与其他语言相比能更快更有效地表达出他们的意图。但是从 Java 技术™ 或 Microsoft® .NET 刚刚转到 Python 的人会发现，功能丰富而精致的 IDE 和开发工具都不见了。那些开发人员可以从他们熟悉的 Java 开发工具中找到解决方案。本文着重介绍了如何使用基于 Java 技术的流行开发工具 Eclipse 和 Ant 进行 Python 开发。</p>

 
</div>

<div class="ibm-column ibm-second">

<p class="leading"><b>发布日期：</b>&nbsp;2004 年 6 月 01 日
  
<br><b>级别：</b>&nbsp;初级
    

<br><strong>访问情况 ：</strong>&nbsp;15064 次浏览
  <br><strong>评论：</strong>&nbsp;<span id="nCmts">0&nbsp;(<a class="dw-view-comment" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#icomments">查看</a>&nbsp;|&nbsp;<a onclick="showSignIn();return false;" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">添加评论</a> - 登录)</span>
  <!-- Rating_Area_Begin -->
  </p><div id="art-rating-summary"><img alt="平均分 4 星 共 12 个评分" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-4b.jpg" class="dw-avg-rating"> 平均分 (12个评分)<br><a class="dw-view-comment" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#iratings">为本文评分</a></div>
  <!-- Rating_Area_End -->
  <br>
<p></p>
</div>

</div>
</div>
<!-- dW_Summary_Area_END -->

<!-- CONTENT_BODY -->
<div id="ibm-content-body">

<!-- MAIN_COLUMN_BEGIN -->
<div id="ibm-content-main">

<!-- Related_Searches_Area_And_Overlays_Begin -->

<!-- MAIN_COLUMN_CONTAINER_BEGIN -->
<div class="ibm-container">

<!-- MAIN_COLUMN_CONTENT_BEGIN -->
<p><a name="N1003A"><span class="atitle">简介</span></a></p>
			<p>多年以来， Java 语言和 Python 阵营之间一直存在大量的异花授粉现象。在这方面作出突出表率的可能是 Jython。这是一个纯粹用 Java 实现的 Python 运行时环境。按照这一说法，您将研究如何用 Eclipse IDE 和 Ant 构建与部署工具实现 Python 开发。Eclipse 和 Ant 是非常流行的工具，它们特性丰富、可扩展性强、而且开放源代码；Python 也具有相同的品质。PyDev 和 PyAntTasks 分别是 Eclipse 和 Ant 的扩展，有了它们就可能用这些 Java 工具开发 Python。本文从下载安装所需的工具与扩展开始讲起。为了解释如何在 Python 开发中使用 Eclipse 和 Ant，我将用实际的 Python 代码例子读取 RSS 资源。
</p>
			<p>本文不会涉及 Eclipse、Ant、Python 的细节。有关这些话题的深入讨论，请参阅
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节中的链接。
      </p>
			<p><a name="N1004A"><span class="smalltitle">Python 支持情况</span></a></p>
			<p>本文用到的软件都在 CPython 2.3 下测试过。除了几个异常情况之外，应该也能在 Jython 中运行。特别需要指出，PyDev 调试器目前不支持 Jython。另一个区别是通过 Jython 执行的脚本在从 PyDev 中运行之后就转入交互模式，这样就必须手动杀死。PyDev 编辑器与 Jython 的源代码兼容，Python Ant 任务除 py-doc 任务之外也和 Jython 兼容。
</p>
			<div class="ibm-alternate-rule"><hr></div><p class="ibm-ind-link ibm-back-to-top"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon" class="ibm-anchor-up-link">回页首</a></p><p><a name="N10053"><span class="atitle">使用 Eclipse 进行 Python 开发</span></a></p>
			<p><a name="N10059"><span class="smalltitle">Eclipse 概述</span></a></p>
			<p>Eclipse 是一个 Java 技术集成开发环境，由 IBM 开发，并开放其源代码。它是 IBM 商业软件 WebSphere Application Development 环境以及其他多种工具的基础。Eclipse 的开发社区非常活跃，他们不仅开发 Eclipse 本身，还开发大量的插件供 Eclipse 使用。有关 Eclispe 和 Eclipse 插件的 Web 站点，请参阅
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节中的链接。尽管从传统上讲 Eclipse 是一种 Java 开发工具，但是一些插件的存在使得在 Eclipse 中开发其他语言的程序成为可能，如 C/C++、Python 和 Perl。
      </p>
			<p>在 Eclipse 中，源代码被组织到项目（project）中。项目可以加载、卸载和导入。Eclipse 用户界面的结构划分为视图（View）与编辑器（Editor）。视图与编辑器的例子包括：源代码大纲视图、Java 源代码编辑器、Python 源代码编辑器和文件系统导航视图。Eclipse 用户界面中最关键的隐含概念就是
        <em>视角（perspective）</em>。视角是通常在执行某种类型活动时一起使用的一组视图。Eclipse 中的标准视角包括：Debug、Java Browsing、Java、Java Type Hierarchy、Plug-in Development、CVS Repository Exploring、Resource 和 Install/Update。目前还不存在单独的 Python 视角。在进行 Python 开发时，我通常使用 Resource 视角和 Debug 视角。
      </p>
			<p><a name="N1006C"><span class="smalltitle">安装 PyDev</span></a></p>
			<p>首先，从 Eclipse Web 站点上下载 Eclipse（请参阅
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节中的链接），并根据您的平台，按照下面的安装指南安装 Eclipse：
      </p>
			<p>Eclipse 的更新机制使 PyDev 插件的安装更加容易。从 Eclipse 中选择
        <strong>Help &gt; Software Updates &gt; Update Manager</strong>，启动 Install/Update 视角。在左下角的 Feature Updates 视图中，将 PyDev 插件更新站点作为新的 Site Bookmark 添加到“Sites to Visit”文件夹下。Eclipse 的 PyDev 更新站点 URL 为 http://pydev.sf.net/updates/。现在，Feature Updates 编辑器中应该显示出“PyDev”这一特性。在 Feature Updates 编辑器中，展开
        <strong>PyDev  &gt; Other</strong>，选择其中显示的 PyDev 特性（至少应该是 0.4.1）。然后选择 “Install Now”安装该特性。Eclipse 将下载 PyDev 插件，并将其安装到 Eclipse 中。
      </p>
			<p><a name="N10082"><span class="smalltitle">导入样例项目</span></a></p>
			<p>为访问本项目中使用的样例代码，可先下载 zip 文件（请参阅
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a>一节），在文件系统中展开该 zip 文件，然后将其中的项目导入 Eclipse。导入项目的方法是先切换到 Resource 视角，选择
        <strong>File &gt; Import</strong>，再选择“Existing Project into Workspace”，然后选择您展开 zip 文件的位置。这时，Navigator 视图中应该出现 feedParserTest 项目。
      </p>
			<p>
样例项目中已经包含了 Fead Parser 通用资源解析库，该库按 Python 开放源代码许可协议发布。有关 Feed Parser 项目 Web 网站的链接，请参阅 
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节。
      </p>
			<div class="ibm-alternate-rule"><hr></div><p class="ibm-ind-link ibm-back-to-top"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon" class="ibm-anchor-up-link">回页首</a></p><p><a name="N10099"><span class="atitle">PyDev 漫游</span></a></p>
			<p>
现在开始学习如何通过已导入的项目了解 PyDev 的特性。PyDev 正处于开发过程中，但已经是非常高效的 Python 开发环境。现在的 PyDev 主要包括以下特性：</p>
			<ul>
				<li>包含 Python 语法高亮显示特性的 Python 编辑器。</li>
				<li>进行 Python 语法分析，并在 Python 编辑器和 Tasks 视图中高亮显示错误。</li>
				<li>可将制表符转换成空格的选项。</li>
				<li>Outline 视图显示导入的库、类以及函数。</li>
				<li>终端视图中的 Python 堆栈跟踪信息可超链接到源代码中。</li>
				<li>源代码内部的超链接；同一模块内的导入和函数调用可通过超链接进行导航。</li>
				<li>从 Navigator 视图中运行 Python 脚本的能力。</li>
				<li>调试器支持断点、代码单步执行以及显示变量的值。</li>
			</ul>
			<p><a name="N100BD"><span class="smalltitle">PyDev 选项窗口</span></a></p>
			<p>
通过 
        <strong>Window &gt; Preferences</strong>，并选择 PyDev（请参阅图 1），便可访问 PyDev 选项。第一组选项可以改变 PyDev 在源代码中处理制表符的方式，还可以改变语法元素的颜色。
      </p>
			
				<br><a name="N100CB"><b>图 1. PyDev 选项窗口</b></a><br>
				<img alt="PyDev 选项窗口" height="361" src="./用 Eclipse 和 Ant 进行 Python 开发_files/pyDevPrefs.jpg" width="477">
			<br>
			<p><a name="N100DB"><span class="smalltitle">设置 Python 解释器</span></a></p>
			<p>
PyDev Debug 选项可以选择 Python 解释器，供执行 Python 代码时使用。如果 PyDev 无法找到 Python 解释器，或者想使用别的解释器，可在此设置（请参阅图 2）。
</p>
			
				<br><a name="N100E6"><b>图 2. PyDev Debug 选项</b></a><br>
				<img alt="PyDev Debug 选项" height="323" src="./用 Eclipse 和 Ant 进行 Python 开发_files/pyDevDebugPrefs.jpg" width="478">
			<br>
			<p><a name="N100F6"><span class="smalltitle">处理源代码</span></a></p>
			<p>
我的大部分 Python 工作都是在 Resource 视角中完成的。使用方法是先切换到 Resource 视角，然后在左上角的 Navigator 视图中双击 feedParserTest/src/feedparserTest/FeedparserTest.py 文件。Python 编辑器打开该文件，对 Python 语法进行解析，完成设置颜色和语法检查的工作（请参阅图 3）。
</p>
			
				<br><a name="N10101"><b>图 3. Python 编辑器</b></a><br>
				<img alt="Python 编辑器" height="390" src="./用 Eclipse 和 Ant 进行 Python 开发_files/pythonEditor.jpg" width="580">
			<br>
			<p>
如果源代码中有任何错误，则显示在右下角的 Tasks 视图中显示出来。双击 Tasks 视图中的错误，便可找到那条讨厌的代码行。
</p>
			<p>
Outline 视图在左下角，其中用一种便于浏览的结构显示出当前正在编辑的文件。导入的库、类、函数全都显示出来，通过双击 Outline 视图中的项目，便可以实现导航。PyDev 在编辑 Python 文件的过程中对齐进行预先解析的工作，同时更新 Outline 视图，执行语法检查，并用不同颜色显示语法元素。
</p>
			<p><a name="N10117"><span class="smalltitle">编辑器的特性</span></a></p>
			<p>
PyDev 0.4 版在 Python 源代码编辑器中为函数和导入库加入了超链接的特性。如果在越过某项导入或函数调用（必须在 
        <code>PYTHONPATH</code> 目录中）的同时按下 Control 键，PyDev 就能显示出一个超链接，这样您可以在导入库或函数的源代码之间导航。请注意，为了在您自己的源代码中跨模块使用该特性（从一个模块链接到另一个模块），必须修改 
        <code>PYTHONPATH</code> 环境变量，在其中加入这些模块，这样 PyDev 就可以找到它们了。
      </p>
			<p>
人们已经开始将一些优异的源代码编辑特性加入最新版本的 PyDev 中，其中就包括代码块注释与取消注释，以及代码左右移位（请参阅图 4）。
</p>
			
				<br><a name="N1012D"><b>图 4. PyDev 编辑器的其他特性</b></a><br>
				<img alt="PyDev 编辑器的其他特性" height="300" src="./用 Eclipse 和 Ant 进行 Python 开发_files/editorFeatures.jpg" width="490">
			<br>
			<p><a name="N1013D"><span class="smalltitle">运行 Python 脚本</span></a></p>
			<p>
如果不能执行代码，那么 IDE 也不是太有用。为执行 Python 代码，可从 Navigator 视图中选择 feedparser.py 文件，用右键点击，然后选择 
        <strong>Python &gt; Run</strong>。随后会显示 Python 的启动配置窗口（请参阅图 5）。
      </p>
			
				<br><a name="N1014B"><b>图 5. Python 启动配置</b></a><br>
				<img alt="Python 启动配置" height="444" src="./用 Eclipse 和 Ant 进行 Python 开发_files/pythonLaunch.jpg" width="407">
			<br>
			<p>
Python 启动配置窗口中可以定义脚本执行的当前目录，传递给脚本的参数，以及用哪一个 Python 解释器运行脚本。feedparser.py 以一个 RSS URL 作为参数，所以可在参数字段中填入 URL，如 http://www.ibm.com/developerworks/news/dw_dwtp.rss。其余的缺省定义就可以了，所以单击 
        <strong>Run</strong>。
      </p>
			<p>
脚本执行时输出信息显示在 Console 窗口中。如果有错误出现，Console 窗口中将显示堆栈跟踪信息，其中的每一行都可以通过超链接找到 Python 源代码。
</p>
			<p><a name="N10164"><span class="smalltitle">Python 调试器</span></a></p>
			<p>Python 调试器是最近才加入 PyDev 插件中的。要使用调试器，可在 Python 编辑器中想中断的代码行的左侧点击，设置断点。在图 6 中，我在 feedparser.py 的 1830 行处设置了断点。然后在 Navigator 视图中选择这个 Python 模块，点击右键，选择“Python  &gt; Debug...”。这时将显示与前面相似的一个启动配置窗口。点击
        <strong>Debug</strong> 进入 Debug 视角，同时启动调试器。
      </p>
			
				<br><a name="N10172"><b>图 6. Python 调试器</b></a><br>
				<img alt="Python 调试器" height="525" src="./用 Eclipse 和 Ant 进行 Python 开发_files/debugger.jpg" width="580">
			<br>
			<p>
左上角的 Debug 视图显示当前正在执行的进程和线程，右上角的 Variables 视图显示当前运行域中的所有变量，Python 编辑器会显示调试器目前停在哪条语句上，同时所有的输出信息都显示与 Console 视图中。调试器可以通过 Debug 视图底部的按钮或 Run 菜单进行控制。
</p>
			<p><a name="N10185"><span class="smalltitle">其他 Eclipse 特性</span></a></p>
			<p>
Eclipse 及其插件还具备很多其他的特性，可应用于 Python 开发中，如 XML 编辑器、UML 编辑器（不过大多数是以 Java 代码为中心），还有资源控制方面的插件。目前 Eclipse 插件站点上列出的插件几乎有 500 个（请参阅 
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节中的相关链接）。我将着重介绍一个对很多 Python 开发人员都特别有用的插件：Eclipse 发行版中已经包括的 CVS 插件，不过不会讨论细节内容。
      </p>
			<p>
Eclipse 中包括特性丰富的集成 CVS：</p>
			<ul>
				<li>支持 SSH、pserver、ext 等连接方法。</li>
				<li>基本 CVS 命令的支持：检出项目、提交变更、更新、向.cvsignore 中增加文件或模式等等。</li>
				<li>文件合并查看。</li>
				<li>在源代码控制中实现对文件不同之处的比较。</li>
				<li>项目同步，并用资料库显示出删除和新增的内容。</li>
			</ul>
			<p>
还可以通过提供其他插件来支持其他源代码控制系统，如 ClearCase、Subversion、Visual SourceSafe 等。
</p>
			<div class="ibm-alternate-rule"><hr></div><p class="ibm-ind-link ibm-back-to-top"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon" class="ibm-anchor-up-link">回页首</a></p><p><a name="N101AA"><span class="atitle">在 Eclipse 中使用 Python 的交互式 shell</span></a></p>
			<p>
Python 解释器支持 Python 代码的交互式执行。这种方式对于调试一段代码是非常有用的，因为不用把代码放进 Python 脚本中并执行脚本了。同时，Python 解释器的交互模式可以很容易地集成到 Eclipse 中。
</p>
			<p>
要增加对 Python 交互式执行的支持，可通过 
        <strong>Run &gt; External Tools &gt; External Tools</strong> 增加一个 External Tool 启动程序。这时将打开 External Tool 启动程序配置窗口。在 Configurations 列表中选择“Program”，然后点击“New”创建一个新的配置。将该配置命名为诸如 "pythonInteractive" 之类，然后设置 Location，令其指向您的 Python 解释器，接着，将 "-i" 作为唯一的参数传递进来（请参阅图 7）。
      </p>
			<p>
在 Common 选项卡下，选中复选框，使该配置在 External Tools 收藏夹菜单中显示出来。
</p>
			
				<br><a name="N101BE"><b>图 7. Python 交互方式配置</b></a><br>
				<img alt="Python 交互方式配置" height="537" src="./用 Eclipse 和 Ant 进行 Python 开发_files/pythonInteractiveConfig.jpg" width="580">
			<br>
			<p>
要运行刚刚在 Eclipse 中创建的启动器，可选择 
        <strong>Run &gt; External Tools &gt; pythonInterpreter</strong>。Python 解释器的输出显示在 Console 视图中。Console 中可输入 Python 命令并执行，就像从命令行中执行 Python 一样。为导入并在交互模式下使用模块，您需要将模块的位置增加到 
        <code>PYTHONPATH</code> 环境变量中。
      </p>
			<p>
在 Eclipse Console 中执行 Python 与用命令行执行的不同之处在于，无法启用命令历史特性（通过向上和向下的方向键实现），因为 Eclipse Console 会自己解释这些键。
</p>
			<div class="ibm-alternate-rule"><hr></div><p class="ibm-ind-link ibm-back-to-top"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon" class="ibm-anchor-up-link">回页首</a></p><p><a name="N101DB"><span class="atitle">在 Python 开发中使用 Ant</span></a></p>
			<p>
Python 会在它需要的时候自动编译模块。这意味着 Python 开发人员通常不必显式地对模块进行编辑。即便如此，有时候手工编译 Python 代码还是很有用的，同时，构建和部署过程中还有很多其他方面的内容可以自动化实现。这也正是构建工具的用武之地。
</p>
			<p>
我将着重介绍来自 Java 编程世界中的 Apache Ant，这个工具可大量应用在 Python 开发中。Apache Ant 是 Java 编程领域内事实上的标准构建工具。它更加轻便，与 Java 技术结合得更好，可用于替代其他的构建工具。Ant 可以在支持 Java 编程语言的任何一种平台上运行。尽管我们需要的大多数构建特性 Ant 都已经提供了，但如果要将 Ant 用做 Python 构建工具，还是需要有一些关键的与 Python 相关的特性。我已经开发了若干定制的 Ant 插件（用 Ant 的行话讲叫做 task），可提供构建 Python 时需要的特定于 Python 的特性。
</p>
			<p>
Ant 用 XML 作为描述构建的格式。build 文件组织为需要执行的目标。每一个目标都可能依赖于其他的目标。Ant 将根据您所请求执行的目标，以及一组依赖目标，来执行任何需要的目标。每一个目标都可能包含任意数量的 Ant 任务，而由 Ant 任务实际执行目标的工作。Ant 有很多内置的任务，可以完成诸如编译 Java 代码、生成文档、操纵文件和目录，同时第三方又提供了很多附加的任务。
</p>
			<p><a name="N101EA"><span class="smalltitle">安装 Python Ant 库</span></a></p>
			<p>
我将通过为 feedparser 项目创建构建脚本来介绍 Ant 构建脚本和 Python Ant 任务的基础知识。为了使用 Python Ant 任务，您需要下载并安装包含这些任务的 Java 库。首先，从 
        <a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料</a> 一节中列出的 URL 中下载 Python Ant 任务库（pyAntTasks.jar）。然后，将 JAR 文件拷贝到 Eclipse 的 Ant 插件下的 lib 目录中。这应该是 Eclipse 安装目录下形如 plugins/org.apache.ant_1.5.3 的子目录。
      </p>
			<p>
Python Ant 任务库拷贝完毕之后，必须在 Eclipse 中启用库。选择 
        <strong>Window &gt; Preferences</strong>，然后选择
        <strong>Ant &gt; Runtime</strong>。将 Ant Home Entries 展开，其中可看到 Eclipse 使用的库（JAR 文件）列表。选择“ Add JAR”，然后从 Eclipse Ant 插件的 lib 目录中选择 Python Ant JAR 文件，就可以将刚刚拷贝的 Python Ant JAR 文件加入库列表中（请参阅图 8）。
      </p>
			
				<br><a name="N10202"><b>图 8. 向 classpath 中加入 Python Ant 任务</b></a><br>
				<img alt="向 classpath 中加入 Python Ant 任务" height="542" src="./用 Eclipse 和 Ant 进行 Python 开发_files/addPyAntTasks.jpg" width="580">
			<br>
			<p>
您现在应该能够创建和运行包含 Python 任务的 Ant 构建脚本了。下面进入构建脚本内部！
</p>
			<p><a name="N10215"><span class="smalltitle">创建构建脚本</span></a></p>
			<p>
我将逐步介绍如何创建一个简单的 Python 构建脚本（请参阅清单 1）。完整的构建脚本 build.xml 可从 feedParserTest 项目的顶层目录中找到。
</p>
			<br><a name="N1021E"><b>清单 1. 用于编译 Python 源代码的构建脚本片断</b></a><br>
			<table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="code-outline"><pre class="displaycode">&lt;project name="feedParserTest" default="compile"&gt;
  &lt;taskdef resource="pyAntTasks.properties"/&gt;
  &lt;property name="src.dir" value="src"/&gt;
  &lt;target name="compile"&gt;
    &lt;py-compile dir="${src.dir}" pythonpath="${src.dir}" optimize="0"/&gt;
  &lt;/target&gt;
&lt;/project&gt;
</pre></td></tr></tbody></table><br>
			<p>
先介绍一个只编译 Python 样例代码的构建脚本。&lt;project&gt; 标签总是构建脚本的根标签。&lt;taskdef&gt; 标签声明在整个构建脚本中使用的 Python 任务。在构建脚本的底部，可以定义 
        <code>compile</code> 目标。目标元素内部是 
        <code>compile</code> 运行期间执行的任务。特别的是 py-compile 任务，它负责从 src 目录开始，编译所有的 Python 代码。该任务会递归遍历所有的子目录，并编译所有的 Python 模块。脚本中没有采用将 src 目录硬编码到调用之处的方式，而是在构建脚本中定义了称为 src.dir 的属性。然后，在需要使用这个目录名的时候，就可以通过 
        <code>${src.dir}</code> 来引用。
      </p>
			<p>
要运行构建脚本，可从 Eclipse 中打开它。Eclipse 具有内置的 Ant 构建脚本编辑和浏览功能。Outline 视图可以显示出构建脚本的结构。在 Navigator 视图中，选择该构建脚本，用右键点击，然后选择“Run Ant...”。选择 
        <code>compile</code> 目标，然后点击“Run”。构建脚本执行过程中的输出信息应该显示在 Console 视图中，表示运行成功。
      </p>
			<p><a name="N1023E"><span class="smalltitle">Python 脚本执行任务</span></a></p>
			<p>
接下来将向构建脚本中加入新的目标，用于执行 Python 脚本（请参阅清单 2）。在本例中，可以将 RSS URL 作为参数来执行 feedparser.py 脚本。
</p>
			<br><a name="N10247"><b>清单 2. 运行 feedparser 脚本的构建脚本片断</b></a><br>
			<table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="code-outline"><pre class="displaycode">  &lt;target name="run.feedparser" depends="compile"&gt;
    &lt;py-run script="src/feedparser/feedparser.py" pythonpath="${src.dir}" optimize="0"&gt;
      &lt;arg value="http://www.ibm.com/developerworks/news/dw_dwtp.rss"&gt;
    &lt;/py-run&gt;
  &lt;/target&gt;
</pre></td></tr></tbody></table><br>
			<p>
上面的目标以 RSS URL 为唯一的参数来执行 feedparser.py 脚本。该目标声明为依赖于 
        <code>compile</code> 目标，所以后者将首先执行。实际上这一步并不是很必要，因为 Python 会根据需要自动编译源代码。如果您执行 
        <code>run.feedparser</code> 目标，就会运行 feedparser.py 脚本，同时将 RSS 的内容输出到 Console 中。
      </p>
			<p><a name="N1025C"><span class="smalltitle">Python 文档任务</span></a></p>
			<p>
Python 的 API 文档编制机制与 Java 技术中的 JavaDoc 系统类似，称为 PyDoc。在构建脚本中加入清单 3 中列出的如下 XML 片断，可为所有的 Python 模块生成 PyDoc。
</p>
			<br><a name="N10265"><b>清单 3. 用于生成 PyDoc 的构建脚本片断</b></a><br>
			<table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="code-outline"><pre class="displaycode"> 1:  &lt;property name="pydoc.dir" value="pydoc"/&gt;
 2:
 3:  &lt;target name="init"&gt;
 4:    &lt;mkdir dir="${pydoc.dir}"/&gt;
 5:  &lt;/target&gt;
 6:
 7:  &lt;target name="pydoc" depends="init,compile"&gt;
 8:    &lt;py-doc pythonpath="${src.dir}" destdir="${pydoc.dir}"&gt;
 9:      &lt;fileset dir="${src.dir}"&gt;
10:        &lt;include name="**/*"/&gt;
11:      &lt;/fileset&gt;
12:    &lt;/py-doc&gt;
13:  &lt;/target&gt;
</pre></td></tr></tbody></table><br>
			<p>
				<code> 
从对上述 pydoc 目标的解析可看出，第 7 行声明了目标名称，并指出它依赖于 
        <code>init</code> 和 
        <code>compile</code> 目标。这意味着在运行 pydoc 目标之前，Ant 必须保证 
        <code>init</code> 和 
        <code>compile</code> 目标已经运行，如果没有，则首先运行这两个目标。
      </code></p><code>
			<p>
				<code>pydoc</code> 目标所依赖的 
        <code>init</code> 目标在第 3 至第 5 行定义。 
        <code>init</code> 目标仅仅创建了一个存放 PyDoc API 文档文件的目录。如前所述，要为所生成文档的保存位置定义一个属性，名为 pydoc.dir。
      </p>
			<p>
第 8 行开始是 py-doc 任务。如前所述，您传入生成 pydoc 过程中所使用的 
        <code>PYTHONPATH</code> 。 
        <code>destdir</code> 属性告诉 py-doc 任务将生成的 HTML 文档输出到何处。
      </p>
			<p>
第 9 至第 11 行定义了在生成文档的过程中应该处理哪些 Python 源文件。文件集是 Ant 脚本中通用的结构，可用于定义所操作的一组文件。这是一种很强大的特性，它使您能够通过名字模式、布尔逻辑和文件属性来选择所要操作的文件。Ant 文档中有这方面的完整描述。本例中递归选择了“src”目录下的所有文件。
</p>
			<p><a name="N102A2"><span class="smalltitle">Python 单元测试任务</span></a></p>
			<p>
Python 中具有标准的单元测试框架（从 Python 2.3 开始。在 Python 2.2 中这只是可选模块），与 Java jUnit 框架十分类似。测试用例的结构与 jUnit 采用相同的方式。每一个待测试的类和模块通常都具有自己的测试类。测试类中包含测试装置（fixture），它们在 
        <code>setUp</code> 函数中初始化。每一个测试都编写为测试类中的一个独立的测试函数。unittest 框架会在测试函数之间循环往复，先调用 
        <code>setUp</code> 、再测试函数、然后清除（ 
        <code>tearDown</code> ）测试函数。请参阅清单 4 中的样例。
      </p>
			<br><a name="N102B7"><b>清单 4. Python 单元测试模块</b></a><br>
			<table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="code-outline"><pre class="displaycode">import unittest
from pprint import pprint
import feedparser
class FeedparserTest(unittest.TestCase):
    """
    A test class for the feedparser module.
    """
    
    def setUp(self):
        """
        set up data used in the tests.
        setUp is called before each test function execution.
        """
        self.developerWorksUrl = "testData/developerworks.rss"       
    def testParse09Rss(self):
        """
        Test a successful run of the parse function for a
        0.91 RSS feed.
        """
        print "FeedparserTest.testParse09RSS()"
        
        result = feedparser.parse(self.developerWorksUrl)
        pprint(result)
        self.assertEqual(0, result['bozo'])
        
        self.assert_(result is not None)
        channel = result['channel']
        self.assert_(channel is not None)
        chanDesc = channel['description']
        self.assertEqual(u'The latest content from IBM developerWorks',
            chanDesc)
        
        items = result['items']
        self.assert_(items is not None)
        self.assert_(len(items)&gt; 3)
        firstItem = items[0]
        title = firstItem['title']
        self.assertEqual(u'Build installation packages with 
            solution installation and deployment technologies',
            title)
  
    def tearDown(self):
        """
        tear down any data used in tests
        tearDown is called after each test function execution.
        """
        pass
                
if __name__ == '__main__':
    unittest.main()
</pre></td></tr></tbody></table><br>
			<p>
上述清单是实现 feedparser 模块基本测试功能的测试类。完整的测试类见 feedParserTest 项目下的 src/feedparserTest/FeedparserTest.py。 
        <code>setUp</code> 函数负责准备整个测试过程中需要使用的测试装置，在本例中只有测试用的 RSS 文件的目录，测试函数将对其进行解析。 
        <code>testParse09Rss</code> 是真正的测试函数。这个函数调用 feedparser.parse 函数，传递测试用的 RSS 文件，输出解析结果，并通过 TestCase 类的 assert 函数执行基本的检查统作。如果任何 assert 的求值结果不是真，或是在执行过程中抛出任何异常，unittest 就会报告一次测试失败或错误。最后的两行负责在这个测试类内部运行测试，方法是直接运行该模块即可。
      </p>
			<p>
要独立运行该测试类，可以按前面所说的相同方式运行 FeedparserTest.py 模块。在 Eclipse Navigator 视图中选择 FeedparserTest.py，然后通过 
        <strong>Python &gt; Run</strong> 运行。此时显示启动配置窗口。除 Base 目录之外，其他都保持缺省值即可。Base 目录必须是 feedParserTest 项目的目录，这样才能在当前目录下找到 RSS 文件（testData/developerworks.rss）。修改 base 目录的设置，然后点击“Run”。输出信息显示在 Console 上。
      </p>
			<p>
您也许希望我们编写的所有单元测试都能够作为构建的一部分自动执行。将下面清单 5 所示的构建片断加入构建脚本便可实现。
</p>
			<br><a name="N102D5"><b>清单 5. 执行单元测试的构建脚本片断</b></a><br>
			<table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="code-outline"><pre class="displaycode">1:  &lt;target name="tests" depends="compile"&gt;
2:	&lt;py-test pythonpath="${src.dir}" dir="."&gt;
3:  	  &lt;fileset dir="${src.dir}"&gt;
4:		&lt;include name="**/*Test.py"/&gt;
5:	  &lt;/fileset&gt;
6:  	&lt;/py-test&gt;
7:  &lt;/target&gt; 
</pre></td></tr></tbody></table><br>
			<p>
第一行是目标声明，这与其他的脚本相同。第 2 至第 6 行调用 py-test 任务。这部分代码将在“src”目录下查找所有以“Test.py”结尾的所有文件，并运行所有测试。 
        <code>PYTHONPATH</code> 设置为“src”，测试执行的当前工作目录就是当前目录（‘.’）。
      </p>
			<p>
运行目标的方法是先运行构建脚本，再选择执行“tests”目标。该目标将运行所有以“Test.py”结尾的测试用例，本例中仅有 FeadparserTest.py。
</p>
			<div class="ibm-alternate-rule"><hr></div><p class="ibm-ind-link ibm-back-to-top"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon" class="ibm-anchor-up-link">回页首</a></p><p><a name="N102E9"><span class="atitle">结束语</span></a></p>
			<p>
Eclipse 和 PyDev 插件的结合，以及 Apache Ant 与 Python Ant 任务一起使用，可以为 Python 开发提供完全集成的开发环境和构建/部署工具。这些工具尚在开发过程中，因此要经常查看是否有更新，如果您觉得特别希望看到某种特性，可以卷起袖管自力更生。
</p>
		<!-- CMA ID: 21345 --> <!-- Site ID: 10 --> <!-- XSLT stylesheet used to transform this file:  dw-article-6.0-beta.xsl -->
<br>
<p><a name="resources"><span class="atitle">参考资料 </span></a></p>
			<ul><li>您可以参阅本文在 developerWorks 全球站点上的
          <a href="http://www.ibm.com/developerworks/library/os-ecant/index.html?S_TACT=105AGX52&S_CMP=cn-a-os">英文原文</a>.
        <br><br></li><li>下载本文的
          <a href="http://public.dhe.ibm.com/software/dw/library/os-ecant/feedparsertest.zip">样例程序与源代码</a>。
        <br><br></li><li>访问
          <a href="http://www.eclipse.org/">Eclipse Web 站点</a>获取 Eclipse 下载文件和 Eclipse 文档。
        <br><br></li><li>
					<a href="http://eclipse-plugins.2y.net/">Eclipse Plug-ins Web 站点</a>中包含数以百计的商业和开放源代码插件，可供在 Eclipse 中安装。
        <br><br></li><li>
					<a href="http://ant.apache.org/">Apache Ant Web 站点</a>上有 Ant 下载和有关 Ant 的文档。
        <br><br></li><li>要获得 Python 的下载和相关信息，请参阅
          <a href="http://python.org/">Python Web 站点</a>。
        <br><br></li><li>
					<a href="http://pydev.sourceforge.net/">PyDev SourceForge 项目站点</a>提供了下载、文档和用户论坛。
        <br><br></li><li>
					<a href="http://www.rpstechnologies.net/PyAntTasks.html">Python Ant tasks Web 站点</a>包含最新版本的 Python Ant 任务。
        <br><br></li><li>Feed Parser 是用 Python 实现的通用资源解析器，可从
          <a href="http://diveintomark.org/projects/feed_parser/">Feed Parser Web 站点</a>上找到。
        <br><br></li><li>
					<a href="http://devworks.krcinfo.com/WebForms/ProductDetails.aspx?ProductID=0596001886">
						<em>Python in a Nutshell</em>
					</a>（O'Reilly &amp; Associates；2003），作者 Alex Martelli，是优秀的 Python 语言参考手册。
        <br><br></li><li>在
          <em>developerWorks</em>的
          <a href="http://www.ibm.com/developerworks/cn/opensource/">开放源代码项目专区</a>中可以找到更多
          <a href="http://www.ibm.com/developerworks/cn/views/opensource/articles.jsp">为 Eclipse 用户撰写的文章</a>。也可以参看
          <em>alphaWorks</em>上最新的
          <a href="http://www.alphaworks.ibm.com/eclipse">Eclipse 技术下载</a>。
        <br><br></li><li>
在 Developer Bookstore 的开放源代码区中，可以找到数百本 
          <a href="http://devworks.krcinfo.com/WebForms/ProductList.aspx?Search=Category&id=1400">开放源代码打折书籍</a>，其中包括几本
          <a href="http://devworks.krcinfo.com/WebForms/ProductList.aspx?search=FreeText&SearchT=Keyword&txtSearch=eclipse">Eclipse</a>和
          <a href="http://devworks.krcinfo.com/WebForms/ProductList.aspx?search=FreeText&SearchT=Keyword&txtSearch=struts&SearchButton=GO">Struts 应用程序开发</a> 方面的图书。
        <br><br></li><li>下载 developerWorks Subscription 精选产品的免费试用版，这些产品可运行于 Linux 上，包括 WebSphere Studio Site Developer、WebSphere SDK for Web services、WebSphere Application Server、DB2 Universal Database Personal Developers Edition、Tivoli Access Manager 以及 Lotus Domino Server。下载链接在 developerWorks 的
          <a href="http://www.ibm.com/developerworks/cn/linux/linux-speed-start/">Speed-start your Linux app</a>区。想更快开始么？请自己访问产品使用文档和技术支持。
        <br><br></li></ul>
<p><a name="author"><span class="atitle">关于作者</span></a></p><div class="ibm-container ibm-portrait-module ibm-alternate-two"><div class="ibm-container-body"><p><a name="author1"> </a>Ron Smith 是 RPS Technologies, Inc 的创始人。这是一家软件开发与软件顾问公司，总部位于芝加哥地区。Ron Smith 为客户提供基于 J2EE 的企业应用程序发方面的咨询，同时也在 RPS Technologies 内部开发软件产品。可以通过
        <a href="mailto:ron.smith@rpstechnologies.net">ron.smith@rpstechnologies.net</a>与 Ron 联系。
      </p></div></div>
<!-- MAIN_COLUMN_CONTENT_END -->
  <!-- OVERLAYS_START -->
  <!-- Report_Abuse_Start -->
  <div class="ibm-common-overlay ibm-no-print" id="reportabuseoverlay">
    <div class="ibm-head"><p><a class="ibm-common-overlay-close" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">关闭 [x]</a></p></div>
    <div class="ibm-body">
      <div class="ibm-main">
        <a class="ibm-access" name="reportabuseoverlay">关于报告滥用的帮助</a>   
        <div class="ibm-title"><h1>报告滥用</h1></div>
        <div class="ibm-container ibm-alternate">
          <p><strong>谢谢!</strong>  此内容已经标识给管理员注意。</p>
          <div class="ibm-overlay-rule"><hr></div>
          <div class="ibm-buttons-row">
            <input type="button" onclick="ibmCommon.Overlays.hide(&#39;reportabuseoverlay&#39;);return false;" class="ibm-btn-cancel-sec dw-btn-cancel-sec" name="ibm-cancel" value="关闭">
          </div>
        </div>
      </div> 
    </div>
    <div class="ibm-footer"></div>
  </div>
  <!-- Report_Abuse_Error_Start -->
  <div class="ibm-common-overlay ibm-no-print" id="reportabuseoverlayerror">
    <div class="ibm-head"><p><a class="ibm-common-overlay-close" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">关闭 [x]</a></p></div>
    <div class="ibm-body">
      <div class="ibm-main">
        <a class="ibm-access" name="reportabuseoverlayerror">关于报告滥用的帮助</a>   
        <div class="ibm-title"><h1>报告滥用</h1></div>
        <div class="ibm-container ibm-alternate">
          <p class="ibm-ind-error"><strong>报告滥用提交失败。  请稍后重试。</strong></p>
          <div class="ibm-overlay-rule"><hr></div>
          <div class="ibm-buttons-row">
            <input type="button" onclick="ibmCommon.Overlays.hide(&#39;reportabuseoverlayerror&#39;);return false;" class="ibm-btn-cancel-sec dw-btn-cancel-sec" name="ibm-cancel" value="关闭">
          </div>
        </div>
      </div> 
    </div>
    <div class="ibm-footer"></div>
  </div>
  <!-- Sign in OVERLAY STARTS HERE --> 
  <div class="ibm-common-overlay" id="signin_overlay">
    <div class="ibm-head">
      <p><a class="ibm-common-overlay-close" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="clearForm();">关闭 [x]</a></p>
    </div>
    <div class="ibm-body">
      <div class="ibm-main">
        <div class="ibm-title ibm-subtitle">
          <h1>developerWorks：登录</h1>
          <div id="ibm-overlay-error-signin" class="no-display"></div>
        </div>
        
        <div class="ibm-container ibm-alternate ibm-buttons-last">
          <div class="ibm-container-body">

            <form class="ibm-column-form" id="sFormId" action="" method="post" name="sForm" onsubmit="return false;">
              <p><label for="ibmid">IBM ID：</label><span><input name="ibm-id" id="ibmid" size="25" value="" class="required" type="text" onkeypress="handleEP(event,this.form);">
                <br><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;/developerworks/dwwi/DWAuthRouter?m=reg&amp;lang=zh_CN&amp;d=&#39;+encodeURIComponent(location.href);})();">需要一个 IBM ID？</a>
                <br><a class="ibm-forward-link" href="http://www.ibm.com/developerworks/dwwi/jsp/WSHelp.jsp?lang=zh_CN">忘记 IBM ID？</a></span>   
              </p> 
              <p><label for="password">密码：</label><span><input name="password" id="password" size="25" value="" class="required" type="password" onkeypress="handleEP(event,this.form);"><br>
                <a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;https://www.ibm.com/account/profile?page=forgot&amp;lang=zh_CN&amp;appname=ibm&amp;required=null&amp;d=&#39;+encodeURIComponent(getAuthUrl())+&#39;%3Fm%3Dloginpage%26lang%3Dzh_CN%26d%3D&#39;+encodeURIComponent(location.href);})();">忘记密码？</a><br>
                <a class="ibm-forward-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="(function () {window.location=&#39;https://www.ibm.com/account/profile?page=chpw&amp;lang=zh_CN&amp;appname=ibm&amp;required=null&amp;d=&#39;+encodeURIComponent(location.href);})();">更改您的密码</a></span></p> 

              <p class="dw-perm-box">
                <span><input id="perm" type="checkbox" name="perm_name"><label for="perm"> 保持登录。</label></span>
              </p>

              <p>单击提交则表示您同意developerWorks 的条款和条件。 <a href="http://www.ibm.com/developerworks/mydeveloperworks/terms?lang=zh">使用条款</a></p>
              <div class="ibm-buttons-row">
                <p><input class="ibm-btn-arrow-pri" name="ibm-submit" value="提交" onclick="signin();return false;" type="submit"><span class="ibm-sep">&nbsp;</span>
                  <input value="取消" type="button" name="ibm-cancel" class="ibm-btn-cancel-sec" onclick="clearForm();ibmCommon.Overlays.hide(&#39;signin_overlay&#39;);return false;"></p>
              </div>
            </form>
            <div class="ibm-overlay-rule"><hr></div>
            <p>当您初次登录到 developerWorks 时，将会为您创建一份概要信息。<strong>您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人，但您可以随时修改这些信息的显示状态。</strong>您的姓名（除非选择隐藏）和昵称将和您在 developerWorks 发布的内容一同显示。</p>
            <div class="dw-overlay-legal"><p>所有提交的信息确保安全。</p></div>
          </div>
        </div>
      </div>
    </div>
    <div class="ibm-footer"></div>
  </div>
  <!-- Sign in OVERLAY ENDS HERE --> 
  
  
  <!-- Display name OVERLAY STARTS HERE --> 
  <div class="ibm-common-overlay" id="displayname_overlay">
    <div class="ibm-head">
      <p><a class="ibm-common-overlay-close" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="clearForm();">关闭 [x]</a></p>
    </div>
    <div class="ibm-body">
      <div class="ibm-main">
        <div class="ibm-title ibm-subtitle">
          <h1>请选择您的昵称：</h1>
          <div id="ibm-overlay-error-dname" class="no-display"></div>
        </div>
        <div class="ibm-container ibm-alternate ibm-buttons-last">
          <div class="ibm-container-body">
            <p class="ibm-overlay-intro">当您初次登录到 developerWorks 时，将会为您创建一份概要信息，您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。</p><p><strong>昵称长度在 3 至 31 个字符之间</strong>。 您的昵称在 developerWorks 社区中必须是唯一的，并且出于隐私保护的原因，不能是您的电子邮件地址。</p>
            <form id="dFormId" method="post" action="" name="dForm" onsubmit="return false;" class="ibm-column-form">
              <p><label for="displayname">昵称：</label><span><input name="displayname" id="displayname" size="25" value="" type="text" onkeypress="handleEP(event,this.form);"></span><span class="ibm-form-note">（长度在 3 至 31 个字符之间）</span>
              </p>
              
              <div class="ibm-overlay-rule"><hr>
              </div>
              <p>单击<strong>提交</strong>则表示您同意developerWorks 的条款和条件。 <a href="http://www.ibm.com/developerworks/mydeveloperworks/terms?lang=zh">使用条款</a>.</p>
              <div class="ibm-buttons-row">
                <p><input class="ibm-btn-arrow-pri" name="ibm-submit" value="提交" onclick="signin();return false;" type="submit"><span class="ibm-sep">&nbsp;</span>
                  <input value="取消" type="button" name="ibm-cancel" class="ibm-btn-cancel-sec" onclick="clearForm();ibmCommon.Overlays.hide(&#39;displayname_overlay&#39;);return false;"></p>
              </div>
            </form>
            <div class="ibm-overlay-rule"><hr></div>
            <div class="dw-overlay-legal"><p>所有提交的信息确保安全。</p></div>
          </div>
        </div>
      </div>
    </div>
    <div class="ibm-footer"></div>
  </div>
  <!-- Display name OVERLAY ENDS HERE -->
  <!-- OVERLAYS_END -->
  <!-- RATINGS START -->
  <p class="ibm-no-print"><span class="atitle"><a name="iratings">为本文评分</a></span></p>
  <input id="art-rating" name="ratinga" type="hidden" value="4"><div id="art-rating-module"><p id="submitErr" class="ibm-ind-error" style="display: none;"><strong>错误：提交失败，请重试。</strong></p><p><span id="ratingSectUI"><img alt="平均分 4 星 共 12 个评分" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-4gw.jpg" class="dw-avg-rating"> 平均分 (12个评分)</span></p><div class="ibm-container" id="ratingForm"><div class="ibm-container-body dw-container-ratings"><form class="dw-ratings-form" onsubmit="artRating.submitRating(); return false;"><input type="radio" name="ratingstars" id="rat-1" value="1"><label class="rating-label" id="star1" for="rat-1">1 星</label><img id="rat-1-img" alt="1 星" title="1 星" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-1w.jpg" class="rating-image"><span class="dw-rating-text">1 星</span><br><input type="radio" name="ratingstars" id="rat-2" value="2"><label class="rating-label" id="star2" for="rat-2">2 星</label><img id="rat-2-img" alt="2 星" title="2 星" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-2w.jpg" class="rating-image2"><span class="dw-rating-text">2 星</span><br><input type="radio" name="ratingstars" id="rat-3" value="3"><label class="rating-label" id="star3" for="rat-3">3 星</label><img id="rat-3-img" alt="3 星" title="3 星" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-3w.jpg" class="rating-image2"><span class="dw-rating-text">3 星</span><br><input type="radio" name="ratingstars" id="rat-4" value="4"><label class="rating-label" id="star4" for="rat-4">4 星</label><img id="rat-4-img" alt="4 星" title="4 星" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-4w.jpg" class="rating-image2"><span class="dw-rating-text">4 星</span><br><input type="radio" name="ratingstars" id="rat-5" value="5"><label class="rating-label" id="star5" for="rat-5">5 星</label><img id="rat-5-img" alt="5 星" title="5 星" src="./用 Eclipse 和 Ant 进行 Python 开发_files/stars120x20-5w.jpg" class="rating-image2"><span class="dw-rating-text">5 星</span><div class="ibm-buttons-row"><p class="ibm-first"><input value="提交" type="submit" name="ibm-submit" class="ibm-btn-arrow-pri dw-ratings-submit"></p></div></form></div></div></div>
  <script language="JavaScript" type="text/javascript">
    // <![CDATA[
   // widget div id and article id as args
   window.artRating.init('art-rating-module','art-rating-summary');
// ]]>
  </script>
  <!-- RATINGS END --> 
  
  <!-- INLINE_COMMENTS_START -->
  <p class="ibm-no-print"><span class="atitle"><a name="icomments">评论</a></span></p>
    <script language="JavaScript" type="text/javascript">
      // <![CDATA[
dwc = {};
dwc.cmts = '条评论';
dwc.signInPreText = '请';
dwc.signIn = '登录';
dwc.or = '或';
dwc.register = '注册';
dwc.signInPostText = '';
dwc.leaveCmt = '后发表评论。';
dwc.view = '查看';
dwc.totalCmts = '共有评论';
dwc.postYourCmt = '添加您的评论';
dwc.show = '显示：';
dwc.recentCmts = '最新评论';
dwc.allCmts = '所有评论';
dwc.tooLongCmt = '您的评论超过了 1000 字符限制';
dwc.numCharsLeft = '剩余 <span id="charCount">{1}</span> 字符';
dwc.reportAbuse = '报告滥用';
dwc.notifyMsg = '有新评论时提醒我';
dwc.htmlWarning = '注意：评论中不支持 HTML 语法'; 
dwc.cmt = '评论：';
dwc.addCmts = '添加评论';
dwc.addCmt = '添加评论';
dwc.doNotErase = '--在下方添加评论--'; 
dwc.viewOrAddCmts = '查看或添加评论';
dwc.reportInapprCont = '举报不良信息';
dwc.reportInapprContLink = 'http://www.ibm.com/developerworks/forums/forum.jspa?forumID=1834';
dwc.postingCmt = '正在发布评论……';
dwc.noCmt = '快来添加第一条评论';
dwc.netwkErr = '在检索评论时出错，请稍后刷新。';
dwc.addACmt = '添加评论';
dwc.instructCmt = '标有星号（<span class="ibm-required">*</span>）的是必填项目。';
dwc.btnPost = '发布';
dwc.btnPostAnon = '匿名发布';
dwc.btnClrCmt = '清除评论';
dwc.btnCancel = '取消';
dwc.showRecent = '显示最新的 {1} 条评论'; // {1} is the count to be substituted
dwc.showNext = '显示后 {1} 条评论'; // {1} is the count to be substituted
dwc.showAllCmts = '显示所有评论';
dwc.enterCmt = '请输入评论内容。';
dwc.loginErr = '暂时无法验证您的登录状态，请稍后再试。';
dwc.postErr = '暂时无法发布您的评论，请稍后再试。';
dwc.postBy = '由 <strong>{1}</strong>  于 {2} '; // {1} is the author to be substituted; {2} is the date
dwc.siteId = 10;
dwc.lang = 'zh_CN';
dwc.viperLang = 'zh';
// ]]>
    </script>
    <div id="threadShow"><div id="cmtTog" style=""><div class="ibm-container ibm-alternate-two dw-commentbox dw-noborder"><p id="cmtHead"><label for="newCmt"><strong>添加评论:</strong></label></p><div class="ibm-container-body dw-commentbox dw-noborder"><p id="signInSect" style="">请 <a onclick="showSignIn();return false;" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">登录</a> 或 <a href="http://www.ibm.com/developerworks/dwwi/DWAuthRouter?m=register&lang=zh_CN&d=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F%23icomments">注册</a>  后发表评论。</p><p>注意：评论中不支持 HTML 语法</p><span id="infoCmt"></span><form focus="name" enctype="multipart/form-data" method="post" action="" name="form" class="ibm-column-form"><p><textarea cols="120" rows="5" name="newCmt" id="newCmt" class="dw-inoperable" disabled=""></textarea><br></p><span class="ibm-input-group"><input type="checkbox" value="1" name="comment_notification" id="comment_notification" disabled=""><label id="notifyText" class="ibm-form-note dw-btn-cancel-sec" for="comment_notification">有新评论时提醒我</label></span><span class="ibm-form-note dw-btn-cancel-sec notifySection" id="maxCharsCount">剩余 <span id="charCount">1000</span> 字符</span><br><br><p></p><p class="ibm-buttons-row"><input type="button" value="发布" jquery1275054459750="11" name="postCmt" id="postCmt" class="ibm-btn-arrow-sec dw-btn-arrow-sec" alt="添加您的评论" disabled=""><br><br></p></form></div></div><div id="topControl" class="ibm-container ibm-alternate-two dw-comment-totals" style="display: none;"><div class="ibm-container-body"><form id="selectComments" method="get" action=""><p><span class="dw-comment-totals-label"><strong>共有评论 (<span id="numCmts">0</span>)</strong></span><span><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" width="100" height="10" alt=""></span><span class="dw-how-many-comments-label" style="display:none" id="dropdownCmts"><label for="howManyComments">显示：</label>&nbsp;<select name="comments" id="howManyComments" class="dw-how-many-comments"><option selected="selected" value="recent">最新评论   </option></select><input type="image" class="ibm-btn-go" name="ibm-go" value="Go" src="./用 Eclipse 和 Ant 进行 Python 开发_files/short-btn.gif" alt="Go"><br></span></p></form></div></div><div id="cmtSect"><div class="comment"><div class="dw-icomment-container"><table class="dw-icomment-body" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><p>快来添加第一条评论</p></td></tr></tbody></table></div></div></div></div><div id="bottomControl" class="ibm-container ibm-alternate-two dw-comment-totals" style="display: none;"><div class="ibm-container-body"><form id="selectComments2" method="get" action=""><p><span class="dw-comment-totals-label"><strong>共有评论 (<span id="numCmts2">0</span>)</strong></span><span><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" width="100" height="10" alt=""></span><span class="dw-how-many-comments-label" style="display:none" id="dropdownCmts2"><label for="howManyComments2">显示：</label>&nbsp;<select name="comments" id="howManyComments2" class="dw-how-many-comments"><option selected="selected" value="recent">最新评论   </option></select><input type="image" class="ibm-btn-go" name="ibm-go" value="Go" src="./用 Eclipse 和 Ant 进行 Python 开发_files/short-btn.gif" alt="Go"><br></span></p></form></div></div></div>
  <!-- INLINE_COMMENTS_END -->
  

  <p class="ibm-ind-link ibm-back-to-top"><a class="ibm-anchor-up-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#ibm-pcon">回页首</a></p>

<!-- Overlays -->
<!-- lk - pull in overlays from ww when required on cn -->
  </code></div><code>
<!-- MAIN_COLUMN_CONTAINER_END -->

<!-- Rating_Meta_BEGIN -->
<!--Rating_Meta_BEGIN--><div class="metavalue">static.content.url=http://www.ibm.com/developerworks/js/artrating/</div><div class="metavalue">SITE_ID=10</div><div class="metavalue">Zone=Open source</div><div class="metavalue">ArticleID=21345</div><div class="metavalue">ArticleTitle=用 Eclipse 和 Ant 进行 Python 开发</div><div class="metavalue">publish-date=06012004</div><div class="metavalue">author1-email=ron.smith@rpstechnologies.net</div><div class="metavalue">author1-email-cc=</div><script language="javascript" type="text/javascript">document.write('<div class="metavalue">url='+location.href.replace(/</g, '%3C')+'</div>');</script><div class="metavalue">url=http://www.ibm.com/developerworks/cn/opensource/os-ecant/</div><!--Rating_Meta_END-->
<!-- Rating_Meta_END -->

</code></div><code>
<!-- MAIN_COLUMN_END-->

<!-- RIGHT_COLUMN_BEGIN -->
<div id="ibm-content-sidebar">

<!-- RIGHT_COLUMN_CONTENT_BEGIN --> 
<div class="ibm-container"><h2>内容</h2><div class="ibm-container-body"><img alt="" height="1" width="1" src="./用 Eclipse 和 Ant 进行 Python 开发_files/c(1).gif"><ul class="ibm-bullet-list"><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N1003A">简介</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N10053">使用 Eclipse 进行 Python 开发</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N10099">PyDev 漫游</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N101AA">在 Eclipse 中使用 Python 的交互式 shell</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N101DB">在 Python 开发中使用 Ant</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#N102E9">结束语</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#resources">参考资料 </a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#author">关于作者</a></li><li><a class="ibm-feature-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#icomments">建议</a></li></ul></div></div>

 


<!-- Dig_Deeper -->

<!-- High_Visibility_Offer -->

<!-- Special_Offers -->

<!-- RIGHT_COLUMN_CONTENT_END -->

</div>
<!-- RIGHT_COLUMN_END -->

<!-- CONTENT_BODY_END -->
</code></div><code>

</code></div><code>
<!-- CONTENT_END -->

 <!-- END_IBM-PCON -->
</code></div><code>

<!-- FOOTER_BEGIN -->
<div id="ibm-footer">
<!-- IBM footer container; disabled -->
</div>

<div id="ibm-page-tools-dw">
	<div id="dw-footer-top-row">
		<ul id="dw-foot-options">
			<li id="dw-print"><a class="ibm-print-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">打印此页面</a></li>
		</ul>
		<ul id="ibm-foot-options-dw">
			<li id="dw-foot-0" class="dw-foot-0-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">分享此页面</a></li>
			<li id="dw-foot-1" class="dw-foot-1-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">关注 developerWorks</a></li>
		</ul>
	</div>       
	
	
	<!-- TOP ROW SLIDER -->
    <div id="dw-page-tools-menu">    
        <div class="ibm-ribbon-pane-dw">
            <div class="ibm-ribbon-section-dw">
				<!-- Share this page -->			
                <div class="dw-footer-columns">
                    <div class="dw-footer-col-4-1">
                    	<h2>分享此页面：</h2>                            
						<ul class="ibm-link-list">
						  <!--<li><a id="dw-foot-0-0" class="dwcn-sina-link"
						        href="#"
						        onClick="javascript:location.href='http://hits.sinajs.cn/A1/weiboshare.html?&amp;appkey=&amp;title='+escape(document.title)+'&amp;url='+escape(location.href)'+'&amp;pic=&ralateUid&amp;language=zh_cn;
						        ">新浪微博</a></li> -->
						   <li><a id="dw-foot-0-0" class="dwcn-sina-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="javascript:location.href=&#39;http://service.weibo.com/share/share.php?title=&#39;+encodeURIComponent(document.title)+&#39;&amp;url=&#39;+escape(location.href)+&#39;&amp;language=zh_cn&#39;
						        ; ">新浪微博</a></li> 
						   <li><a class="dwcn-renren-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="javascript:location.href=&#39;http://share.renren.com/share/buttonshare?title=&#39;+encodeURIComponent(document.title)+&#39;&amp;link=&#39;+escape(location.href);
						        ">人人网</a></li> 
						    <li><a class="dwcn-tencent-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="javascript:location.href=&#39;http://v.t.qq.com/share/share.php?title=&#39;+encodeURIComponent(document.title)+&#39;&amp;url=&#39;+escape(location.href);
						        ">腾讯微博</a></li> 
						   				
						</ul>
                    </div>
                    <div class="dw-footer-col-4-2">
						<ul class="ibm-link-list">
						    <li><a class="dwcn-sohu-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="javascript:location.href=&#39;http://t.sohu.com/third/post.jsp?title=&#39;+encodeURIComponent(document.title)+&#39;&amp;link=&#39;+escape(location.href);
						        ">搜狐微博</a></li>
						    
						    <li><a class="dwcn-netease-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#" onclick="javascript:location.href=&#39;http://t.163.com/article/user/checkLogin.do?info=&#39;+encodeURIComponent(document.title)+ &#39;&#39; +escape(location.href);
						        ">网易微博</a></li>
						    <li><a class="ibm-facebook-link" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F&t=%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">Facebook</a></li>
						</ul>
                </div>
                    <div class="dw-footer-col-4-3">
						<ul class="ibm-link-list">
						 <li><a class="ibm-linkedin-link" href="http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F&title=%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">LinkedIn</a></li>   
						 <li><a class="ibm-twitter-link" href="http://twitter.com/home?status=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F%20-%20%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">Twitter</a></li>   
						 <li><a class="ibm-delicious-link" href="http://delicious.com/post?url=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F&title=%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">Delicious</a></li>
						
						</ul>
                    </div>
                   <div class="dw-footer-col-4-4">
						<ul class="ibm-link-list">
						 <li><a class="ibm-digg-link" href="http://digg.com/submit?phase=2&url=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fcn%2Fopensource%2Fos-ecant%2F&title=%E7%94%A8%20Eclipse%20%E5%92%8C%20Ant%20%E8%BF%9B%E8%A1%8C%20Python%20%E5%BC%80%E5%8F%91">Digg</a></li>   
						 <li><a class="ibm-email-link" href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#">发送此页面</a></li>
						</ul>
                    </div>
                    <div class="dw-footer-close">
						<ul>
							<li><div class="dw-footer-close-share"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10"></a></div></li>
						</ul>
                    </div>
                </div>
                  <!-- Follow developerWorks -->
                <div class="dw-footer-columns">
                    <div class="dw-footer-col-1-1 dw-footer-col-1-1-cn">
                    	<h2>关注 developerWorks 中国网站：</h2>
						<ul class="ibm-link-list">
							<!--<li><a id="dw-foot-1-0" class="ibm-twitter-link" href="http://www.twitter.com/dwchina">Twitter</a></li>-->
						    <li><a id="dw-foot-1-0" class="dwcn-sina-link" href="http://weibo.com/ibmdw/">新浪微博</a></li>
						</ul>
                    </div>
                    <div class="dw-footer-close">
						<ul>
							<li><div class="dw-footer-close-follow-cn"><a href="http://www.ibm.com/developerworks/cn/opensource/os-ecant/#"><img src="./用 Eclipse 和 Ant 进行 Python 开发_files/c.gif" alt="关闭 [x]" width="20" height="10"></a></div></li>
						</ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<div id="ibm-footer-module-dw">
	<div class="dw-footer-columns">
		<div class="dw-footer-col-6-1">
			<ul>
				<!--<li><a href="http://www.ibm.com/developerworks/aboutdw/">About</a></li>-->
				<li><a href="https://www.ibm.com/developerworks/secure/feedback.jsp?domain=dwchina">帮助</a></li>
				<li><a href="http://www.ibm.com/developerworks/cn/author/">联系编辑</a></li>
				<li><a href="https://www.ibm.com/developerworks/secure/myideas2.jsp?domain=dwchina&start=true">提交内容</a></li>
				<li><a href="http://www.ibm.com/developerworks/cn/sitemap/">网站导航</a></li>
			</ul>
		</div>
		<div class="dw-footer-col-6-2">
			<ul>
				<li><a href="http://www.ibm.com/developerworks/cn/rss/">订阅源</a></li>
				<li><a href="http://www.ibm.com/vrm/newsletter/10104?S_TACT=105AGX52&S_CMP=dwcntop">在线浏览每周时事通讯</a></li>
			</ul>
		</div>
		<div class="dw-footer-col-6-3">
			<ul>
				<li><a href="https://www.ibm.com/developerworks/community/report?lang=zh">报告滥用</a></li>
				<li><a href="https://www.ibm.com/developerworks/community/terms?lang=zh">使用条款</a></li>
				<li><a href="http://www.ibm.com/privacy/cn/zh/">隐私条约</a></li>
				<li><a href="http://www.ibm.com/ibm/accessibility/cn/">浏览辅助</a></li>
			</ul>
		</div>
		<div class="dw-footer-col-6-4-cn">
			<ul>
<!-- lk v17 updated link -->			    
				<li><a href="http://www.ibm.com/developerworks/cn/academic/">IBM 教育学院教育培养计划</a></li>
				<li><a href="http://www.ibm.com/developerworks/cn/gep/">IBM 创业企业全球扶持计划</a></li>
				<li><a href="http://www.ibm.com/partnerworld/isv/">ISV 资源 (英语)</a></li>
			</ul>
		</div>
		<div class="dw-footer-col-6-5">
		</div>
		<div class="dw-footer-col-6-6">
		</div>
	</div>
	<!-- Language selector no-script -->
	<noscript>
	&lt;div id="dw-footer-selectlang"&gt;
		&lt;h2&gt;&lt;a name="SELECTLANG"&gt;选择语言：&lt;/a&gt;&lt;/h2&gt;
		&lt;ul&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/"&gt;English&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/cn/"&gt;中文&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/jp/"&gt;日本語&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/ru/"&gt;Русский&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/br/"&gt;Português (Brasil)&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/ssa/"&gt;Español&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/vn/"&gt;Việt&lt;/a&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
	</noscript>
</div><!-- FOOTER_END -->

 <!-- END_IBM-TOP -->
</code><div id="ibm-overlay-top"></div></div><code>
 
 <!-- SCRIPTS_INCLUDE_BEGIN -->
<!-- JQuery start -->
<script type="text/javascript" language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/jquery.hoverIntent.minified.js"></script>
<script type="text/javascript" language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/jquery.cluetip.js"></script>
<!-- xM Masthead/Footer -->
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/jquery.tools.min.js" type="text/javascript">//</script>
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/jquery.jscroll.js" type="text/javascript">//</script>
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/dw_v16.js" type="text/javascript">//</script>
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/flash-detect(1).js" type="text/javascript">//</script>
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/dwsi.js" type="text/javascript">//</script>
<script type="text/javascript" language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/showcomments.js">//</script>
<script language="JavaScript" type="text/javascript">
	// <![CDATA[
 jQuery('threadShow').showComments('95%',5,'nCmts','icomments');
// ]]>
</script>
<script type="text/javascript" language="JavaScript">
	jQuery.noConflict();     
	// Put all your code in your document ready area
	jQuery(document).ready(function(jQuery) {
	// Do jQuery stuff using jQuery 
	jQuery('a.dwauthor').cluetip({
	local: true,
	showTitle: false,
	positionBy: 'bottomTop',
	sticky: true,	
	mouseOutClose: true,
	closeText: '<img src="//dw1.s81c.com/developerworks/js/jquery/cluetip98/i/x.gif" alt="Close" />',
	arrows: false,
	dropShadow: true,
	cluetipClass: 'dwbasic'
	});   	
	
	rBHash = {};
	rBHash['viperLang'] = 'zh';
	rBHash['urlLang'] = 'cn';

	// si
	initSI();
	});
</script>
<!-- JQuery end -->
<!-- Overlay js -->
<script language="JavaScript" src="./用 Eclipse 和 Ant 进行 Python 开发_files/overlay.js" type="text/javascript"></script><!-- BEGIN: Use this section to set page specific variables for the Unica Page Tag -->
<script language="JavaScript">var NTPT_PGEXTRA="ibmSkillLevel=1&ibmAdoptPhase=667&ibmRole=710&ibmCmaId=21345";</script>
<!--END --><!-- SCRIPTS_INCLUDE_END -->

<div id="ibm-metrics">
<script src="./用 Eclipse 和 Ant 进行 Python 开发_files/stats.js" type="text/javascript">//</script>
</div>



</code><div id="cluetip-waitimage" style="position: absolute; z-index: 95; display: none;"></div><div id="cluetip" style="z-index: 96; display: none; position: absolute;"><div style="z-index: 95; opacity: 0.1; top: 1px; left: 1px; position: absolute; background-color: rgb(0, 0, 0);"></div><div style="z-index: 94; opacity: 0.1; top: 2px; left: 2px; position: absolute; background-color: rgb(0, 0, 0);"></div><div style="z-index: 93; opacity: 0.1; top: 3px; left: 3px; position: absolute; background-color: rgb(0, 0, 0);"></div><div style="z-index: 92; opacity: 0.1; top: 4px; left: 4px; position: absolute; background-color: rgb(0, 0, 0);"></div><div style="z-index: 91; opacity: 0.1; top: 5px; left: 5px; position: absolute; background-color: rgb(0, 0, 0);"></div><div style="z-index: 90; opacity: 0.1; top: 6px; left: 6px; position: absolute; background-color: rgb(0, 0, 0);"></div><div id="cluetip-outer" style="position: relative; z-index: 97;"><div id="cluetip-title"></div><div id="cluetip-inner"></div></div><div id="cluetip-extra"></div><div id="cluetip-arrows" class="cluetip-arrows" style="z-index: 97;"></div></div></body></html>